'''
Author: thinktanker thinktanker@163.com
Date: 2025-04-27 16:33:05
LastEditors: duliang thinktanker@163.com
LastEditTime: 2025-05-02 14:13:36
FilePath: 
Description: 
'''
from openpyxl import load_workbook
import os
from tkinter import Tk
from tkinter import filedialog

tk = Tk()
tk.withdraw()
filepath = filedialog.askopenfilename(filetypes=[("Excel文件", "*.xlsx")],
                                      title="请选择Excel文件")
if filepath:
    wb = load_workbook(filepath)
    sheet = wb.active
    for index, row in enumerate(range(1, sheet.max_row + 1)):
        for content in sheet[row]:
            if content.value:
                if str(content.value).strip() == "直接工程费":
                    直接工程费_pos = row
                elif str(content.value).strip() == "直接费":
                    直接费_pos = row
                elif str(content.value).strip() == "基本直接费":
                    基本直接费_pos = row
                elif str(content.value).strip() == "材料费":
                    材料费_pos = row
                elif str(content.value).strip() == "机械使用费":
                    机械使用费_pos = row
                elif str(content.value).strip() == "其它费":
                    其它费_pos = row
                elif str(content.value).strip() == "零星工程费":
                    零星工程费_pos = row
                elif str(content.value).strip() == "其他直接费":
                    其他直接费_pos = row
                elif str(content.value).strip() == "冬雨季施工增加费":
                    冬雨季施工增加费_pos = row
                elif str(content.value).strip() == "夜间施工增加费":
                    夜间施工增加费_pos = row
                elif str(content.value).strip() == "安全文明措施费":
                    安全文明措施费_pos = row
                elif str(content.value).strip() == "其他费":
                    其他费_pos = row
                elif str(content.value).strip() == "现场经费":
                    现场经费_pos = row
                elif str(content.value).strip() == "临时设施费":
                    临时设施费_pos = row
                elif str(content.value).strip() == "现场管理费":
                    现场管理费_pos = row
                elif str(content.value).strip() == "价差调整":
                    价差调整_pos = row
                elif str(content.value).strip() == "间接费":
                    间接费_pos = row
                elif str(content.value).strip() == "利润":
                    利润_pos = row
                elif str(content.value).strip() == "未计价材料费":
                    未计价材料费_pos = row
                elif str(content.value).strip() == "税金":
                    税金_pos = row
                elif str(content.value).strip() == "工程单价":
                    工程单价_pos = row
                    sheet[
                        f"F{直接工程费_pos}"] = f"=F{直接费_pos}+F{其他直接费_pos}+F{现场经费_pos}+F{价差调整_pos}"
                    sheet[f"F{直接费_pos}"] = f"=F{基本直接费_pos}+F{零星工程费_pos}"
                    sheet[
                        f"F{其他直接费_pos}"] = f"=F{冬雨季施工增加费_pos}+F{夜间施工增加费_pos}+F{安全文明措施费_pos}+F{其他费_pos}"

                    sheet[f"E{冬雨季施工增加费_pos}"] = f"=F{直接费_pos}"
                    sheet[
                        f"F{冬雨季施工增加费_pos}"] = f"=E{冬雨季施工增加费_pos}*D{冬雨季施工增加费_pos}/100"
                    sheet[f"E{夜间施工增加费_pos}"] = f"=F{直接费_pos}"
                    sheet[
                        f"F{夜间施工增加费_pos}"] = f"=E{夜间施工增加费_pos}*D{夜间施工增加费_pos}/100"
                    sheet[f"E{安全文明措施费_pos}"] = f"=F{直接费_pos}"
                    sheet[
                        f"F{安全文明措施费_pos}"] = f"=E{安全文明措施费_pos}*D{安全文明措施费_pos}/100"
                    sheet[f"E{其他费_pos}"] = f"=F{直接费_pos}"
                    sheet[f"F{其他费_pos}"] = f"=E{其他费_pos}*D{其他费_pos}/100"
                    sheet[f"E{临时设施费_pos}"] = f"=F{直接费_pos}"
                    sheet[f"F{临时设施费_pos}"] = f"=E{临时设施费_pos}*D{临时设施费_pos}/100"
                    sheet[f"E{现场管理费_pos}"] = f"=F{直接费_pos}"
                    sheet[f"F{现场管理费_pos}"] = f"=E{现场管理费_pos}*D{现场管理费_pos}/100"

                    sheet[f"F{现场经费_pos}"] = f"=F{临时设施费_pos}+F{现场管理费_pos}"
                    sheet[
                        f"E{间接费_pos}"] = f"=F{直接费_pos}+F{其他直接费_pos}+F{现场经费_pos}"
                    sheet[f"F{间接费_pos}"] = f"=E{间接费_pos}*D{间接费_pos}/100"

                    sheet[
                        f"E{利润_pos}"] = f"=F{直接费_pos}+F{其他直接费_pos}+F{现场经费_pos}+F{间接费_pos}"
                    sheet[f"F{利润_pos}"] = f"=E{利润_pos}*D{利润_pos}/100"
                    sheet[f"E{税金_pos}"] = f"=F{直接工程费_pos}+F{间接费_pos}+F{利润_pos}"
                    sheet[f"F{税金_pos}"] = f"=E{税金_pos}*D{税金_pos}/100"
                    sheet[
                        f"F{工程单价_pos}"] = f"=F{直接工程费_pos}+F{间接费_pos}+F{利润_pos}+F{未计价材料费_pos}+F{税金_pos}"

    savepath = filedialog.asksaveasfilename(
        initialfile=
        f"{os.path.splitext(os.path.basename(filepath))[0] }-带公式.xlsx",  # 预填文件名
        filetypes=[("Excel文件", "*.xlsx")],
        defaultextension=".xlsx",  # 默认后缀名
        title="请选择保存路径")
    if savepath:
        wb.save(savepath)
